#include <iostream>
#include <unistd.h>

using namespace std;

class Singleton
{
    Singleton()//该类不能在外被构造
    {
        cout<<"程序运行时就打印该信息"<<endl;
    }
    ~Singleton(){}//该类不能在外被析构
    Singleton(const Singleton& )=delete;//该类不能在外被拷贝
    Singleton& operator=(const Singleton& )=delete;//该类不能在外被赋值
    
    static Singleton data;//该进程下唯一Singleton对象，即单例
public:
    static Singleton *GetInstance()//外部只能通过调用该函数拿到data
    {
        return &data;
    }
};

Singleton Singleton::data;//data的初始化

int main()
{
    //以下两种实例化方式都无法实例化出对象
    // Singleton s;
    // Singleton s1(s);

    cout<<Singleton::GetInstance()<<endl;
    return 0;
}
